package org.example.blog.services;

import org.example.blog.entities.Category;
import org.example.blog.entities.Post;
import org.example.blog.entities.User;
import org.zoomdev.zoom.common.utils.Page;

import java.util.List;

public interface PostService {
    Post createPost(String title, String content, User author, Category category);

    Post updatePost(Post post);

    void deletePost(Long postId);

    Post getPostById(Long postId);

    List<Post> getLatestPosts(int count);

    List<Post> searchPosts(String keyword);


    /**
     * 分页获取所有发布的文章
     *
     * @param page 页码 (从0开始)
     * @param size 每页数量
     * @return 文章分页对象
     */
    Page<Post> findPublishedPosts(int page, int size);

    /**
     * 按分类分页获取文章
     *
     * @param categoryId 分类ID
     * @param page       页码
     * @param size       每页数量
     * @return 文章分页对象
     */
    Page<Post> findByCategoryId(Long categoryId, int page, int size);

    /**
     * 按用户分页获取文章
     *
     * @param userId 用户ID
     * @param page   页码
     * @param size   每页数量
     * @return 文章分页对象
     */
    Page<Post> findByUserId(Long userId, int page, int size);

    /**
     * 分页搜索文章
     *
     * @param keyword 关键词
     * @param page    页码
     * @param size    每页数量
     * @return 文章分页对象
     */
    Page<Post> search(String keyword, int page, int size);

    List<Post> findByIds(List<Long> postIds);
}
